#!/bin/bash
#首次连接手机请打开手机adb调试,并且有线连接
#========开始属性定义===========

#端口号
port=5555
#ip
ip=""
#apk文件路径和名称
apk_path_name="C:/Users/flyin/Desktop/Rokid/UXRTest/Apk/demo.apk"
#日志过滤字符串
log_filter="Unity"
#apk_包名/活动名
pkg_name="com.Rokid.UXRTest"/"com.unity3d.player.UnityPlayerActivity"
#判断设备是否已经连接成功
connect_success=0
#判断是否安装成功
install_sucess=0
#判断是否自动开启打印日志
auto_logcat=1
#是否自动启动
auto_launch=1
#是否只是开始logcat
only_logcat=0
adb_path="C:/Users/flyin/Desktop/Rokid/UXRTest/Library/PackageCache/rokid.androiddebugtools.unity@f727731449/Tools/Win"


#========结束属性定义===========

#第一步，先连接设备

# 判断是否有设备连接，并且将设备信息写入devices.txt
$adb_path/adb devices > devices.txt
devices_count=`grep "device$" devices.txt -c`
echo "当前连接的设备数量" $devices_count

if [ $devices_count = 0 ]
then
    #没有设备连接，则从default_ip.txt读取默认IP
    echo "设备列表为空, 尝试连接默认配置中的ip"
    ip=`grep -E -o "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)" $adb_path/../Shell/default_ip.txt`
    
    echo "读取的默认ip:"$ip

    #连接到默认IP
    $adb_path/adb connect $ip

    current_device=$ip:$port

    let devices_count++
else 
    #有设备连接，则读取列表中的第一个设备信息
    devices_info=`grep -E -o ".*(device|offline)" devices.txt|head -2|tail -1`
    #使用空格分割字符串，设备信息
    devices_info_arr=(${devices_info// /})
    
    #第一个是设备IP和端口
    current_device=${devices_info_arr[0]}
    #第二个是设备状态（离线，在线等）
    devices_status=${devices_info_arr[1]}

    #设备离线，重新连接
    if [ `echo $devices_status` = "offline" ]
    then
        echo "设备重新连接..."
        $adb_path/adb connect $current_device
    fi

    echo "读取设备中的第一个设备信息":$current_device

    let devices_count++
fi

#第二步：保证IP合法性，且连接成功

#判断是否有设备连接
if [ $devices_count != 0 ]
then
    # 获取当前手机设备的ip地址，并写入ipconfig.txt临时文件
    $adb_path/adb -s $current_device  shell ip -f inet addr show>ipconfig.txt
    # 匹配ip
    ipArray=`grep -E -o ".*wlan0$" ipconfig.txt`

    echo $ipArray>temp.txt

    ip=`grep -E -o "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)" temp.txt|head -1`

    echo "匹配的ip是":$ip

    # 判断ip是否有效，还有点问题...
    if [ -z $ip ] 
    then
        echo "未找到合法的ip，请检查手机是否连接电脑"
    else
        #更新设备信息
        current_device=$ip":"$port

        #判断是否成功匹配到结果
        echo "更新手机的默认的ip:" $ip>$adb_path/../Shell/default_ip.txt

        echo "current_device:"$current_device

        #判断当前设备是否在(ip地址devices)--todo 这里问题有点多...
        res=`grep -E -o "$current_device" devices.txt`

        #判断结果是否为空
        if [ -z $res ]
        then 
            #设备不在设备信息中,需要重新连接
            echo "设备未连接,开始连接设备":$current_device
            $adb_path/adb tcpip $port
            $adb_path/adb -s $current_device connect $ip:$port
            connect_success=1
        else
            connect_success=1
        fi
    
    fi

    #删除临时文件
    rm -f ipconfig.txt
    rm -f devices.txt
    rm -f temp.txt
fi

echo "only_logcat:"$only_logcat

#第三步：安装APK，并运行

if [ $connect_success = 1 ]
then
    #安装
    if [ $only_logcat = 0 ]
    then
        echo "开始安装应用..."
        $adb_path/adb  -s $current_device install -d -r $apk_path_name
        install_sucess=1
    fi

    #运行
    if [ $install_sucess = 1 ]
    then
        if [ $auto_launch = 1 ]
        then 
            if [ $only_logcat = 0 ]
            then 
                echo "开始运行apk"
                $adb_path/adb -s $current_device shell am start -n  $pkg_name
            else 
                 echo "安装失败!!!"
            fi
        fi
    fi

    #打印Log
    if [ $auto_logcat = 1 ]
    then
        echo "开始打印日志..."
        $adb_path/adb -s $current_device logcat -s $log_filter
    fi
fi

echo "按任意键继续"
read -n 1
echo "继续运行"

# rm -f devices.txt

